Optimized computation of first and second divider values for a phase locked loop system

ABSTRACT

Given a target frequency (F VE ), a reference frequency (F R ), an error limit (E L ), and a first divider range (150), a first (R) and a second (N) integer divider value are computed. First, an initial first divider (R) is selected (152). Then, a second divider (N) is computed as equal to the target frequency (F VE ) divided by the reference frequency (F R ) multiplied times the selected first divider (154). Then an error term (E) is computed to quantify the error introduced by using integers as dividers (156). The divider terms are accepted (166) if the error term is less than the error limit (158). Otherwise, a new first integer divider (R) is selected (160), repeating the computation of the second (N) divider (154), the computation of the error (E) term (156), and the test of the error term (E) against a limit as a loop (158). This loop is repeated until either the error term (E) is less than the error (E L ) limit (158), or the selected first divider term (R) is outside its specified range (162).

CROSS REFERENCE TO RELATED APPLICATION

This application is related to our commonly assigned copending United States patent application entitled "ADAPTIVE PHASE LOCKED LOOP SYSTEM WITH CHARGE PUMP HAVING DUAL CURRENT OUTPUT" by James Stuart Irwin, having docket number SC90545A, and filed of even date herewith issued Jun. 30, 1998, with U.S. Pat. No. 5,774,023.

FIELD OF THE INVENTION

The present invention generally relates to phase-locked loops, and more specifically to computing divider values for Tri-State phase detectors.

BACKGROUND OF THE INVENTION

Phase lock loops are used to generate a set of output frequencies that are accurately controlled by a reference frequency. The frequency step sizes are controlled by a reference frequency divided by R. The output frequency is N times the step size. For many applications, a Tri-State phase detector is the method of choice of implementing a phase lock loop (PLL). One advantage of Tri-State phase detectors over Sample-and-Hold phase detectors or phase lock loops is in low power applications.

FIG. 1 is a prior art block diagram that illustrates a standard non-adaptive phase lock loop implementation. The phase lock loop is driven by an accurate frequency source, such as a crystal oscillator 22. Note that other types of accurate frequency sources are well known in the art. The output of the frequency source 22 is the oscillator frequency 23. The oscillator frequency 23 is divided by a first frequency divider 24. This first frequency divider 24 divides by an integer "R". The R frequency divider 24 sets the step size or reference frequency 25.

A voltage control oscillator (VCO) 30 generates an output frequency 36. The output frequency 36 is divided by integer "N" by the N frequency divider 32. The output of the N frequency divider 32 is equal to the reference frequency 25 which is the output of the R frequency divider 24. Phase detector (PD) 26 compares the outputs of the R frequency divider 24 and the N frequency divider 32. The phase detector 26 generates output current pulses proportional to the error between divider signals 25 and 34. These error pulses from the phase detector 26 are received as input by a charge pump 28. The charge pump 28 produces current sinking or sourcing current pulses ultimately for a loop filter 38 which is applied to voltage control oscillator (VCO) 30.

A typical loop filter 38 is shown. It consists of loop filter capacitor 40 in series with loop damping resistor 42. In parallel with loop filter capacitor 40 and loop damping resistor 42 is first pole capacitor 44. This is the first pole of the loop filter. The second pole of the loop filter consists of second pole resistor 46 and second pole capacitor 48.

The bandwidth of the PLL is calculated by F_(u) =K₀ *I*R/2*Π*N where K₀, is the VCO 30 tuning sensitivity in Hertz/volts, I is the current pulse amplitude in amperes, R is the value of loop damping resistor 42 in Ohms. Capacitors 40, 44, 48 and resistor 46 are selected for desired loop dynamics. Values of components of the loop filter along with current I, K₀, and N determine response time to change in frequency and of the sampling frequency 25, 34 from the charge pump 28. A compromise exists between fast response time to changes in frequency and adequate suppression of spurious outputs from VCO 30.

FIG. 2 is a prior art block diagram of an improved phase lock loop shown in FIG. 1. It is currently implemented by National Semiconductor in their phase lock loop products, and henceforth is known as the "National" solution. The primary difference between the National solution in FIG. 2 and the prior art solution illustrated in FIG. 1 is in the loop filter 38. The National solution has an extra gating input to the loop filter 38. Charge pump 28 generates one of two currents 58. In the example illustrated in FIG. 2, the one current is four times the other current. In the high current mode, connection 59 of the loop filter 38 is connected to ground. At the same time that the current is increased by a factor of 4, the N divider 32 and the R divider 24 are each reduced by a factor of 4. The reason that this division or reduction is done is that by increasing the current by a factor of 4, reducing the two dividers 24, 32 by 4 and by reducing the damping resistor R 42 by 4, the result is a loop bandwidth that is 4 times greater than the original. The purpose of this increase in loop bandwidth is to make the response faster to a change in frequency. Note that loop filter capacitor 40 is replaced by loop capacitor filter 50, and loop damping resistor 42 is replaced by a first loop damping resistor 52 and a second loop damping resistor 54 in FIG. 2. In high current mode, the second or lower loop damping resistor 54 is shorted out of the circuit. First pole of the loop filter 44 is replaced by a comparable capacitor 56 in the National solution. Note however that the second pole of loop filter 38 consisting of resistor 46 and capacitor 48 has been removed. The reason for this removal is to not deteriorate loop stability in the high current mode.

The intent of this National solution approach is to allow a phase lock loop (PLL) to more quickly to adjust to a new output frequency. However, since the step size is four times larger than ultimately desired, a worse case frequency error can occur which is two times the desired channel spacing. As a result, the PLL locks quickly, but with the large frequency error, the time saved to arrive at a final frequency is not significantly improved. This problem is aggravated because the loop filter 38 must be slowed down to compensate for the lack of the second pole of the loop filter 38 comprising resistor 46 and capacitor 48. If the second pole of the loop filter 38 is not removed, the spurious output of the VCO 30 will often not be at an acceptable level.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention can be obtained when the following detailed description is considered in conjunction with the following drawings, in which:

FIG. 1 is a prior art block diagram that illustrates a standard non-adaptive phase lock loop implementation;

FIG. 2 is a prior art block diagram of an improved phase lock loop shown in FIG. 1;

FIG. 3 is a block diagram of an improved phase lock loop system, in accordance with the present invention;

FIG. 4 is a block diagram illustrating the addition of a second pole of filtering to loop filter of FIG. 3;

FIG. 5 is a block diagram illustrating one usage of dynamically computing N and R divisors, in accordance with the present invention;

FIG. 6 is a block diagram illustrating temperature correction of a medium frequency oscillator, similar to that done for high frequency reference oscillator in FIG. 5;

FIG. 7 is a flow chart illustrating an optimized method of computing the N divisor and the R divisor in according with the present invention; and

FIG. 8 is a flow chart that illustrates an optimized embodiment of the method in FIG. 7.

DETAILED DESCRIPTION

The problems outlined above are solved by the present invention in two different ways. The solutions can divided into a hardware solution and a software solution. In the hardware solution, the charge pump has two outputs, a normal current output and a high current output. The loop filter is driven at two points to give the correct damping response for each output. Use of the charge pump itself, which is always switching, is glitch-free by design and is a well known technique. Simply disabling one or the other of the two output currents provides the error free transition from adapt to normal. This has advantages over the National approach which uses a gate to add a resistor to the filter. This added gate in the National solution is prone to glitches due to its inherent gate-to-drain capacitance. The generated glitch must then settle during the slow, narrow band mode. An added capacitor to the present invention allows a degree of freedom in designing the compound loop filter. One purpose of this capacitor is to bypass the portion of the loop of the filter that deals with the low frequency corner during the time the high current output is operating. Without this feature, it is more difficult to optimize PLL time and frequency responses. A trade-off must always be made between the degree of filtering possible to suppress spurious outputs of the Tri-State detector, while keeping the loop bandwidth as wide as possible so as to have fast adapted locktime.

The second facet of the solution implemented in the present invention is a software solution. Starting with the target output voltage F_(ve), and the reference oscillator frequency F_(R), the two divider constants R and N, can be computed to minimize the amount of resulting error. This is done by computing a N divisor, then an Error term, testing the Error term against a limit, and if the Error term is outside the limit, selecting another R divider term. This is repeated until an R divider term is identified that is within the specified range. For many applications, a small frequency error is acceptable. The software solution described hereinbelow provides a means of arriving at a set of divider values with a greatly reduced computational burden.

FIG. 3 is a block diagram of an improved phase lock loop system, in accordance with the present invention. Two parts of the phase lock loops shown in FIGS. 1 and 2 have been changed. The charge pump 28 has two outputs instead of the usual single output. The low current output 60 provides the current pulses commensurate with the final narrow loop bandwidth. The high current output 62 applied midpoint to the loop filter 38 provides output current pulses whose amplitude is larger than the current output 60, usually by factor equivalent to the ratio of N during and after adapt mode (or R during and after adapt). This modification factor is typically 4 or 8. Note that only one current output will be present at a time, the other one being open. This is commonly called a Tri-state.

Loop filter 38 consists of a low current first pole filter capacitor 64 coupled in parallel with a low current damping resistor 68. In series between the low current capacitor 64 and damping resistor 68 and ground is a second filter. The second part of the filter has a high current first pole filter capacitor 66 coupled in parallel with a high current damping resistor 70. These are coupled in series with a loop filter capacitor 72. High current damping resistor 70, and low current damping resistor 68 are selected such that the ratio of the high current damping resistor 70 to the value of the sum of the two damping resistors 68, 70 is the same as the amplitude of the current pulses from the low current charge pump output 60 and the high current charge pump output 62. The resistance of the high current damping resistor 70 times the high current output 62 will usually be the same as the current of the low current output 60 times the resistance of the two damping resistors 68, 70.

FIG. 4 is a block diagram illustrating the addition of a second pole of filtering to loop filter 38 of FIG. 3. This second pole of filtering consists of resistor 74 and capacitor 76. The second pole resistor 74 is coupled between the low current output of the charge pump 60 and the voltage controlled oscillator 30. The second pole capacitor 76 is coupled between input to the VCO 30 and ground. To reduce the effects of this added pole in the high current mode, a feed forward capacitor 78 is added between the high current output 62 and the input to the VCO 30. This feed forward capacitor 78 allows the loop to remain stable in high current mode by reducing the effects of the low current damping resistor 68 and the second pole resistor 74 while not degrading spurious suppression in the low current non-adapt mode where spurious suppression is especially important.

FIG. 5 is a block diagram illustrating one usage of dynamically computing N and R divisors. A high frequency reference oscillator 104 and a temperature sensor 106 are contiguously located in an environment 102. For example, they may be both located on the same printed circuit board adjacent to each other. As with the phase lock loops illustrated in FIGS. 1-4, the output of the high frequency reference oscillator 104 is the driving input to phase lock loop 108. Input to a central processing unit (CPU) 110 or computer processor are the output of the temperature sensor 106 and a frequency select 116. The frequency select 116 is used to select the correct channel or frequency. Additionally, the CPU 110 is preloaded with a model, possibly located in a look-up table, of the characteristics of the oscillator 104 based on temperature. Often, oscillators have their characteristics characterized prior to purchase, and this characterization is preloaded into the CPU 110. The CPU 110 utilizes the information provided by the temperature sensor 106, the frequency select 116, and the preloaded oscillator configuration to tune divider values N 112 and R 114 to provide a more stable output frequency 118 than would be possible without this compensation. This allows temperature correction of the high frequency reference oscillator output to generate a fixed constant output frequency 118, over a range of varying temperatures without actually tuning the high frequency reference oscillator 104.

FIG. 6 is a block diagram illustrating temperature correction of a medium frequency oscillator 124, similar to that done for high frequency reference oscillator 104 in FIG. 5. One disadvantage of the system illustrated in FIG. 5 is that it requires a high frequency reference oscillator 104 since the high frequency is necessary to provide a large number of possible solutions based on the integer granularity of the N divisor 112 and R divisor 114. In the case of a medium frequency reference oscillator 124, the integer granularity of the possible divisors N 112 and R 114 is proportionally reduced. For that reason, a second embodiment is illustrated. As with the system in FIG. 5, the medium frequency reference oscillator 124 output drives the phase lock loop 108. The output of the phase lock loop 108 is the generated output frequency 128. Again, as in FIG. 5, the other two inputs to the phase lock loop 108 are the N divisor 112 and the R divisor 114, both of which are generated by CPU 110. Input to the CPU 110 is temperature sensor 106, again located near the oscillator 124. Another input to the CPU 110 is frequency select 116. One additional output of the CPU 110 is a known error term 126 which is input into a digital analog converter 122. The N divisor 112 and the R divisor 114 generate a known error which can then be compensated by the CPU by adjusting the output frequency of the medium frequency reference oscillator 124. The digital analog converter (DAC) 122 takes the digital known error term 126 from the CPU 110 and converts the error term 126 to an analog correction voltage which is used to adjust the output frequency of the medium frequency reference oscillator 124.

Note that the software portion of this invention does not require temperature correction or use of a temperature sensor 106. Rather the use of temperature sensor 106 to temperature correct reference oscillators 104 and 124, is for illustrative purposes only to illustrate one application of the software portion of the present invention.

In many applications, a small frequency error is perfectly acceptable. This is evidenced by the common acceptance of frequency reference oscillators which typically have an error, due to setting tolerance, aging, and temperature, on the order of possibly several parts per million. The acceptable error is determined by the application and by applicable governmental regulations.

The method described hereinbelow takes advantage of the acceptable error by choosing a new, smaller set of values for the N and R divider values than would commonly be use for a given required step size. The small N divider value allows a larger loop bandwidth to be used without suffering a degradation of spurious output. A wider bandwidth has benefits relating to faster locktime and robustness to perturbations of the loop voltages. The method further provides a means of calculating an acceptable pair of N and R divider ratios with a reduced computation complexity. This results in a reduction of the number of multiplications and divisions necessary in order to compute the divider values. In addition to these speed benefits, such a method also eliminates the need for a large lookup table.

FIG. 7 is a flow chart illustrating an optimized method of computing the N divisor 112 and the R divisor 114 in according with the present invention. Inputs 150 to the method are F_(R), F_(VE), Error Limit (E_(L)), and R Range. F_(R) is a crystal oscillator reference frequency 23. F_(VE) is the expected or target output 36 from the voltage controlled oscillator (VCO) 30. Additional inputs are a tolerable error limit (E_(L)), and the allowable range of the reference oscillator R divider 114.

The method starts by selecting an initial R divider value (R_(O)), step 152. Preferably, this is a value that results in the frequency output 25 of the R divider 24 ("R") four to eight times the normal step size. Then a loop is entered where the N divider frequency 112 ("N") is computed to be equal to F_(VE) /F_(R) *R, step 154. Next, an error ("E") is computed equal to F_(VE) -(F_(R) /R)*N, step 156. Note that N and R, as dividers, are integers. Therefore, the error term (E) computed in step 156 is the measure of the frequency error that results essentially from the noncontinuous nature of these numbers as integers. The error (E) is tested against the specified error limit (E_(L)), step 158. If the error term (E) is within the specified error limit (E_(L)), step 158, the N and R divider values are output, step 166, as being within range, and the method terminates normally.

Otherwise, another R divider value is selected, step 160. One embodiment is to select R back and forth around the initial R value selected. Thus, if the initial R value were 1,000, the next R value would be 1,001, then 999, then 1,002, then 999, etc. A test is then made whether this newly selected R value is within the specified range, step 162. If the new R divider value is within the specified range, step 162, the loop repeats, computing a new N divider value, step 154. Otherwise, the method error terminates, step 164, indicating that no N and R divider combination could be found within the specified range. Note that in one embodiment, the R range is specified to be within 5-10% of the initial R value.

FIG. 8 is a flow chart that illustrates an optimized embodiment of the method in FIG. 7. Inputs 170 to the method are again F_(R), F_(VE), error limit (E_(L)), and R range. First, a constant K is computed to be equal to F_(VE) /F_(R), step 172. Next, a constant L is computed equal to the constant K*R_(O), where R₀ is an initial R divider value, step 174. Next, fractional error portion of N (E_(F)) is computed to be equal to E_(L) *R_(O) /F_(R), step 176. An R divider increment ("r") is initialized equal to zero. Note that for small variations of R, it is sufficient to approximate the error limit (E_(L)) by using R₀ instead of the actual R divider value.

A loop is then entered, and an N divider value is computed to be equal to L+K*r, step 178. Next, the fractional portion (N_(F)) of the newly computed N divider value is isolated, step 180. The fractional part of N (N_(F)) is compared to the fractional error limit (E_(F)), step 182. If the fractional portion of N (N_(F)) is less than the fractional error term (E_(F)), step 182, the N and R divider values are output, step 188, and the method is complete.

Otherwise, the next R divider increment (r) is selected, step 184. A test is made whether the R divider increment (r) is within the specified range, step 186. This is equivalent to the test of R being within range in step 162 in FIG. 7. However, the R divider increment (r) is an integer offset from the initial R divider initial value (R_(O)). Thus, the R divider increment (r) can be incremented and decremented by one from zero. The special case of the R divider increment (r) equal to zero is the test of whether the initial R divider value (R_(O)) is within the specified range. In a one improvement, the computation of N can be optimized through use of a N_(High) and N_(Low), both initialized to L, and each incremented (N_(High)) or decremented (N_(Low)) by K each time through the loop. Indeed, one further improvement is to only retain the fractional part of N_(High) and N_(Low). If the R divider increment (r) is within the specified range, step 186, the loop is repeated, starting with computation of the new N divider value in step 178. Otherwise, the method error terminates, indicating that a N divider 112 and R divider 114 could not be found within allowable limits that translates the input frequency (F_(R)) 23 to the output frequency (F_(VE)) 36.

Those skilled in the art will recognize that modifications and variations can be made without departing from the spirit of the invention. Therefore, it is intended that this invention encompass all such variations and modifications as fall within the scope of the appended claims.

Claim elements and steps herein have been numbered and/or lettered solely as an aid in readability and understanding. As such, the numbering and/or lettering in itself is not intended to and should not be taken to indicate the ordering of elements and/or steps in the claims. 

I claim:
 1. A method of determining a first integer divider value (R) and a second integer divider value (N) for a phase lock loop system given a target frequency (F_(VE)), a reference frequency (F_(R)), an initial first integer divider (R₀) value and an error limit (E_(L)) comprising:A) initializing a first integer divider increment (r) equal to zero; B) computing a first constant (K) equal to a quotient of the target frequency (F_(VE)) divided by the reference frequency (F_(R)); C) computing a second constant (L) equal to a product of the first constant (K) multiplied times the initial first integer divider (R₀) value; D) computing the second integer divider value (N) equal to a sum of the second constant added to a product of the first constant multiplied times the first integer divider increment (r); E) testing to determine whether an error term (E) resulting from computation of the second integer divider value (N) is within the error limit (E_(L)); F) selecting a different first integer divider increment (r) as the first integer divider increment (r) if the error term (E) is determined in step (E) to be within the specified error limit (E_(L)); and G) repeating steps (D) and (E) as a loop after the different first integer divider increment (r) has been selected as the first integer divider increment (r) in step (F).
 2. The method in claim 1 wherein step (E) comprises:1) isolating a fractional part (N_(F)) of the second integer divider value (N); and 2) testing the fractional part (N_(F)) against a fractional error limit (E_(F)).
 3. The method in claim 2 which further comprises:F) computing the fractional error limit (E_(F)) to be equal to a product of the error limit (E_(L)) multiplied times a quotient of the initial first integer divider (R₀) value divided by the reference frequency (F_(R)).
 4. A method of determining a first integer divider value (R) and a second integer divider value (N) for a phase lock loop system given a target frequency (F_(VE)), a reference frequency (F_(R)), an initial first integer divider (R₀) value and an error limit (E_(L)) comprising:A) initializing a first integer divider increment (r) equal to zero; B) computing a first constant (K) equal to a quotient of the target frequency (F_(VE)) divided by the reference frequency (F_(R)); C) computing a second constant (L) equal to a product of the first constant (K) multiplied times the initial first integer divider (R₀) value; D) computing the second integer divider value (N) equal to a sum of the second constant added to a product of the first constant multiplied times the first integer divider increment (r); E) testing to determine whether an error term (E) resulting from computation of the second integer divider value (N) is within the error limit (E_(L)); F) selecting a different first integer divider increment (r) as the first integer divider increment (r) if the error term (E) is determined in step (E) to be within the specified error limit (E_(L)); and G) repeating steps (D) and (E) as a loop after the different first integer divider increment has been selected as the first integer divider increment (r) in step (F) while the first integer divider increment (r) is within a specified range.
 5. The method in claim 4 wherein:values of the first integer divider increment (r) are selected in step (F) from an ordered set of integers comprising: +1, -1, +2, -2, etc.
 6. The method in claim 4 wherein:values of the first integer divider increment (r) are selected in step (F) from an ordered set of integers comprising: -1, +1, -2, +2, etc.
 7. The method in claim 4 which further comprises:G) initializing a upper second integer divider value (N_(High)) and a lower second integer divider value (N_(Low)) to be equal to the second constant; wherein step (D) comprises:computing the upper second integer divider value (N_(High)) equal to a sum of the upper second integer divider value (N_(High)) added to the first constant (K); and computing the lower second integer divider value (N_(Low)) equal to a difference of the lower second integer divider value (N_(Low)) minus the first constant (K); and within step (F):values of the first integer divider increment (r) are selected in step (F) from an ordered set of integers comprising: +1, +2, +3, etc.
 8. Software for determining a first integer divider value (R) and a second integer divider value (N) for a phase lock loop system given a target frequency (F_(VE)), a reference frequency (F_(R)), an initial first integer divider (R₀) value and an error limit (E_(L)) comprising:A) a set of computer instructions for initializing a first integer divider increment (r) equal to zero; B) a set of computer instructions for computing a first constant (K) equal to a quotient of the target frequency (F_(VE)) divided by the reference frequency (F_(R)); C) a set of computer instructions for computing a second constant (L) equal to a product of the first constant (K) multiplied times the initial first integer divider (R₀) value; D) a set of computer instructions for computing the second integer divider value (N) equal to a sum of the second constant added to a product of the first constant multiplied times the first integer divider increment (r); E) a set of computer instructions for testing to determine whether an error term (E) resulting from computation of the second integer divider value (N) is within the error limit (E_(L)); F) a set of computer instructions for selecting a different first integer divider increment (r) as the first integer divider increment (r) if the error term (E) is determined in step (E) to be within the specified error limit (E_(L)); and G) a set of computer instructions for repeating steps (D) and (E) as a loop after the different first integer divider increment (r) has been selected as the first integer divider increment (r) in step (F).
 9. A computer readable medium containing the software in claim 8 encoded in a computer readable format.
 10. Software for determining a first integer divider value (R) and a second integer divider value (N) for a phase lock loop system given a target frequency (F_(VE)), a reference frequency (F_(R)), an initial first integer divider (R₀) value and an error limit (E_(L)) comprising:A) a set of computer instructions for initializing a first integer divider increment (r) equal to zero; B) a set of computer instructions for computing a first constant (K) equal to a quotient of the target frequency (F_(VE)) divided by the reference frequency (F_(R)); C) a set of computer instructions for computing a second constant (L) equal to a product of the first constant (K) multiplied times the initial first integer divider (R₀) value; D) a set of computer instructions for computing the second integer divider value (N) equal to a sum of the second constant added to a product of the first constant multiplied times the first integer divider increment (r); E) a set of computer instructions for testing to determine whether an error term (E) resulting from computation of the second integer divider value (N) is within the error limit (E_(L)); F) a set of computer instructions for selecting a different first integer divider increment (r) as the first integer divider increment (r) if the error term (E) is determined in step (E) to be within the specified error limit (E_(L)); and G) a set of computer instructions for repeating steps (D) and (E) as a loop after the different first integer divider increment has been selected as the first integer divider increment (r) in step (F) while the first integer divider increment (r) is within a specified range.
 11. A computer readable medium containing the software in claim 10 encoded in a computer readable format. 